308bdd00b15a9aa6426348645e5e14852cbf1dbc,src/main/java/com/csforge/sstable/JsonTransformer.java,JsonTransformer,serializePartitionKey,#DecoratedKey#,74
Before Change
AbstractType<?> keyValidator = metadata.getKeyValidator();
objectIndenter.setCompact(true);
try {
if (this.shortKeys) {
arrayIndenter.setCompact(true);
}
json.writeStartArray();
if (keyValidator instanceof CompositeType) {
// if a composite type, the partition has multiple keys.
CompositeType compositeType = (CompositeType) keyValidator;
assert shortKeys || compositeType.getComponents().size() == metadata.partitionKeyColumns().size();
ByteBuffer keyBytes = key.getKey().duplicate();
// Skip static data if it exists.
if (keyBytes.remaining() >= 2) {
int header = ByteBufferUtil.getShortLength(keyBytes, keyBytes.position());
if ((header & 0xFFFF) == 0xFFFF) {
ByteBufferUtil.readShortLength(keyBytes);
}
}
int i = 0;
while (keyBytes.remaining() > 0 && i < compositeType.getComponents().size()) {
AbstractType<?> colType = compositeType.getComponents().get(i);
ByteBuffer value = ByteBufferUtil.readBytesWithShortLength(keyBytes);
String colValue = colType.getString(value);
if (this.shortKeys) {
json.writeString(colValue);
} else {
ColumnDefinition column = metadata.partitionKeyColumns().get(i);
json.writeStartObject();
json.writeFieldName("name");
json.writeString(column.name.toString());
json.writeFieldName("value");
json.writeString(colValue);
json.writeEndObject();
}
byte b = keyBytes.get();
if (b != 0) {
break;
}
++i;
}
} else {
// if not a composite type, assume a single column partition key.
assert metadata.partitionKeyColumns().size() == 1;
ColumnDefinition column = metadata.partitionKeyColumns().get(0);
if(shortKeys) {
json.writeString(keyValidator.getString(key.getKey()));
} else {
json.writeStartObject();
json.writeFieldName("name");
json.writeString(column.name.toString());
json.writeFieldName("value");
json.writeString(keyValidator.getString(key.getKey()));
json.writeEndObject();
After Change
AbstractType<?> keyValidator = metadata.getKeyValidator();
objectIndenter.setCompact(true);
try {
arrayIndenter.setCompact(true);
json.writeStartArray();
if (keyValidator instanceof CompositeType) {
// if a composite type, the partition has multiple keys.